1. Field of Invention
The present invention relates generally to the field of data networks and buses. More particularly, in one aspect, the present invention is directed to reducing power consumption and/or bus activity over a serial bus network.
2. Description of Related Technology
In a typical network (such as that employing a serialized protocol such as USB or the like), software running on a host device configures the host controller to continuously or periodically poll each client device in order to determine if a given client has data to transfer to the host. This polling occurs generally irrespective of the actual amount of data designated for transfer to the host over a certain period of time. Thus, in situations where a client has no data to send to the host over a significant period of time, significant system resources are often diverted to facilitate a largely non-productive polling process.
Each time the host polls a client over a typical serial bus, three events of interest occur. First, a portion of the available bus bandwidth must be used to transmit the polling message from the host to the client, and to transmit the corresponding response from the client back to the host (or a designated proxy). In situations where no data is ready or available to be sent to the host, the aforementioned process uses up available bus bandwidth for what is largely extraneous signaling.
Second, for every polling request sent from the host to the client, the host must access at least one descriptor or other data structure stored in its main memory. These repeated accesses of the host's memory necessitate the use of inter alia processor pipeline bandwidth, and accordingly consumes significant amounts of power in the host device.
Third, the client must use up power in responding to the constant barrage of polling signals. When the client has no data to send to the host, this polling becomes wholly unnecessary, and power is expended on generating a stream of negative responses. If the client device happens to be a battery-powered device (as many USB devices are), this power consumption will shorten the client's battery life significantly, thereby leading to reduced user satisfaction and other possible disabilities.
Moreover, the aforementioned approach to polling is host-driven; i.e., the host or its proxy issues the polling message to which the client responds. This can be a disability in certain contexts, since the host often has no relevant information (or at least the capacity to analyze such information) regarding the state, power situation, etc. of the client(s) that it is polling. Stated differently, there may be more opportune times, situations, and/or mechanisms to use in communicating with a client process than purely a “dumb” periodic polling (i.e., one which is rote in nature, and operates irrespective of the client process or device condition) of the type taught in the prior art. In such cases, it may also be desirable to have the client process/device control at least aspects of the communication, versus merely having it react to instigation from a host or host proxy.
Prior art devices have attempted to mitigate the foregoing problems in a variety of ways. For example, U.S. Pat. No. 5,432,462 to Obregon, et al. issued Jul. 11, 1995 entitled, “Input buffer circuit having sleep mode and bus hold function” discloses an input buffer circuit having sleep mode and bus hold capability. An input section of the buffer circuit is operated from an operating voltage which is lower than a supply voltage of the buffer circuit thereby minimizing the static power dissipation. Sleep mode circuitry is included for effectively disconnecting an input signal from the rest of the buffer circuit thereby minimizing dynamic power dissipation. Bus hold circuitry is included for holding the logic state appearing at an output of the input buffer circuit when the input signal is removed thereby further reducing the static power dissipation.
U.S. Pat. No. 5,799,196 to Flannery, Michael R. issued Aug. 25, 1998 entitled, “Method and apparatus of providing power management using a self-powered universal serial bus (USB) device” discloses the capability of a peripheral bus to provide an alternative low power source is combined with existing power management software that controls a computer's main power supply unit to provide stand-by power to logic in the computer that remains active to monitor the system environment for predetermined wake-up events. A self-powered Universal Serial Bus device supplies the minimal power needed by the active logic without the inefficiencies of a dual-stage power supply unit or the expense of incorporating both low-power and a full-power units.
U.S. Pat. No. 6,101,550 to Zucker issued Aug. 8, 2000 entitled, “Method and structure for interrupt polling signal bandwidth allocation in universal serial bus (USB) system” discloses a Universal Serial Bus controller that includes an allocation unit configured to allocate bandwidth to a plurality of nodes in a polling list, each node being capable of storing at least one descriptor representing a respective polling signal. The nodes are arranged in a binary tree structure having a plurality of leaf nodes, a root node, and at least one level of intermediate nodes which are successor nodes for the leaf nodes and predecessor nodes for the root node.
“Sleep”, “Suspend”, “Pause”, and similar commands are well known in the data networking arts. See, e.g., U.S. Pat. No. 4,616,359 to Fontenot, and U.S. Pat. No. 5,243,596 to Port, et al., which disclose generally the use of “stop” packets or pause frames to throttle packet delivery over a network. These approaches are generally associated with data flow (e.g., receipt FIFO buffers) and are irrespective of power management considerations. A pause frame is issued by the receiving entity when the conditions are met (e.g., incoming FIFO at a high-water mark or the like), and released by a “resume” or similar frame transmitted by the recipient when the condition clears or other such criteria are met. Timeouts can also be used; e.g., stop sending packets for a prescribed period of time when the trigger condition has been reached, and then resume.
Similarly, in the particular context of USB, the “Suspend” command can be used to put the bus in a suspended state, and thus halt all bus traffic, including the polling between the host and the client. However, communications over the bus cannot resume until a corresponding USB “RESUME” signal sent from the host occurs. If the client re-instates communication the latency associated with the USB Resume command is on the order of tens milliseconds, this will significantly hamper bus performance, and is therefore impracticable for all intents and purposes (including those related to control of polling messaging, etc.).
Despite the foregoing approaches, the prior art neither teaches nor suggests an effective technique for reducing polling activity associated with a bus in order to, inter alia, reduce bus activity and power consumption.
Additionally, prior art solutions tend to focus completely on host-centered approaches, rather than one which allows for a client-driven approach, or even a hybrid of the two (or one utilizing information from an external source).
Accordingly, what is needed are methods and apparatus for reducing bus activity (specifically unnecessary activity) in order to preserve power in both the host and the client, and also to free up available bus bandwidth for useful operations. At the same time, such methods and apparatus ideally should not significantly impede bus performance due to e.g., latencies associated with bus operations, or for any other reason. These methods and apparatus would be particularly useful in the context of high-speed serialized bus protocols (e.g., USB, IEEE-Std. 1394, etc.), where such latencies and non-productive polling operations currently extract a premium.